package cc.rengu.igas.channel.ncqs.facade;


import cc.rengu.igas.channel.ncqs.facade.request.*;
import cc.rengu.igas.channel.ncqs.facade.response.*;
import cc.rengu.igas.channel.ncqs.facade.result.Result;

/**
 * 银联无卡快捷支付通道服务 on 2019/10/11.
 */
public interface NcqsPayService {

    /**
     * 协议支付签约触发短信
     *
     * @param request 协议支付签约触发短信请求
     * @return 协议支付签约触发短信响应
     */
    Result<NcqsAgreePaySignWithSmsAcqResponse> agreePaySignWithSms(NcqsAgreePaySignWithSmsAcqRequest request) throws Exception;

    /**
     * 直接支付触发短信
     *
     * @param request 直接支付触发短信请求
     * @return 直接支付触发短信请求响应
     */
    Result<NcqsApplyPaySmsAcqResponse> applyPaySms(NcqsApplyPaySmsAcqRequest request) throws Exception;

    /**
     * 账户验证
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsAcctVerifyAcqResponse> acctVerify(NcqsAcctVerifyAcqRequest request) throws Exception;

    /**
     * 借记转账签约触发短信
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsDebitAcctSignWithSmsAcqResponse> debitAcctSignWithSms(NcqsDebitAcctSignWithSmsAcqRequest request) throws Exception;

    /**
     * 协议支付签约
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsAgreePaySignAcqResponse> agreePaySign(NcqsAgreePaySignAcqRequest request) throws Exception;

    /**
     * 借记转账签约
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsDebitAcctSignAcqResponse> debitAcctSign(NcqsDebitAcctSignAcqRequest request) throws Exception;

    /**
     * 协议支付解约
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsAgreePaySignRescindAcqResponse> agreePaySignRescind(NcqsAgreePaySignRescindAcqRequest request) throws Exception;

    /**
     * 借记转账解约
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsDebitAcctSignRescindAcqResponse> debitAcctSignRescind(NcqsDebitAcctSignRescindAcqRequest request) throws Exception;

    /**
     * 协议支付
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsAgreePayAcqResponse> agreePay(NcqsAgreePayAcqRequest request) throws Exception;

    /**
     * 直接支付
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsDirectPayAcqResponse> directPay(NcqsDirectPayAcqRequest request) throws Exception;

    /**
     * 借记转账
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsDebitTransferAcqResponse> debitTransfer(NcqsDebitTransferAcqRequest request) throws Exception;

    /**
     * 贷记付款
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsCreditPayAcqResponse> creditPay(NcqsCreditPayAcqRequest request) throws Exception;

    /**
     * 退款
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsRefundAcqResponse> refund(NcqsRefundAcqRequest request) throws Exception;

    /**
     * 交易状态查询
     *
     * @param request 请求
     * @return 响应
     */
    Result<NcqsTransStatQueryAcqResponse> transStatQuery(NcqsTransStatQueryAcqRequest request) throws Exception;

}
